// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	2/19/2014 3:54:22 PM				
// -----------------------------

#ifndef _IBuffer_h
#define _IBuffer_h

#include "DxCommon.h"

namespace DxLib
{

	class IRenderDevice;

	class DXLIB IBuffer
	{
	public:
		// Create the Interface
		static IBuffer*		Create(IRenderDevice* lpDevice, BufferType eType, Usage eUsage, UInt32 cpuAccess, UInt32 uStride, UInt32 uCount, const void* lpData);
		// Release the Interface
		virtual void		Release() = 0;
		// Clone the buffer
		virtual IBuffer*	Clone() = 0;

		virtual void	Update(const void* lpData, UInt32 uDataSize) = 0;
		virtual void	RecalculateCount() = 0;

		// Get the Size of 1 Element
		virtual UInt32	GetStride() const = 0;
		// Get the Amount of Elements
		virtual UInt32	GetCount() const = 0;
		// Get the Data
		virtual void*	GetData() const = 0;
	};

}

#endif